#include "main.h"
#include "stdio.h"
#include "stdint.h"
#include "stdlib.h"

int main()
{
    linklist H1,H2;
    H1=list_creat();
    H2=list_creat();
    int a1[]={1,3,5,7,9};
    int a2[]={2,4,6,7,10};
    for(int a=0;a<sizeof(a1)/sizeof(a1[0]);a++)
    {
        list_add(H1,a1[a]);
    }
    for(int b=0;b<sizeof(a2)/sizeof(a1[0]);b++)
    {
        list_add(H2,a2[b]);
    }
    list_show(H1);
    list_show(H2);
    list_qsort(H1,H2);
    list_show(H1);
}


linklist list_creat()                     //创建动态链表
{
    linklist H;
    H=(linklist)malloc(sizeof(listnode));
    if(H==NULL)
    {
        printf("create failed\n");
        return NULL;
    }

    H->data=0;
    H->next=NULL;
    return H;
}

int list_add(linklist H,int value)           //增加数据
{
    linklist L;
    L=list_creat();
    L->data=value;
    L->next=NULL;
    while(H->next!=NULL)
    {
        H=H->next;
    }
    H->next=L;
    printf("add success\n");
    return 0;
}

int list_show(linklist H)
{
    if(H==NULL)
    {
        printf("list is null\n");
        return 0;
    }
    printf("This list is\t");
    while(H->next!=NULL)
    {
        H=H->next;
        printf("%d ",H->data);
    }
    printf("\n");
    return 0;
}


int list_qsort(linklist H1,linklist H2)
{
    if(H1==NULL)
        return -1;
    if(H2==NULL)
        return -1;
    
    linklist p,q,L;
    L=H1;
    p=H1->next;
    q=H2->next;
    H1->next=NULL;
    H2->next=NULL;
    while(p!=NULL&&q!=NULL)
    {
        if(p->data >= q->data)
        {
            L->next=q;
            q=q->next;
            L=L->next;
            L->next=NULL;
           
            
        }
        else
        {
            L->next=p;
            p=p->next;
            L=L->next;
            L->next=NULL;
        }
    }
    if(p!=NULL)
    {
        L->next=p;
    }
    if(q!=NULL)
    {
        L->next=q;
    }
    return 0;
}

